/**
 *
 */
package quartz;

import java.util.Date;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import quartz.job.HelloJobTrigger;

/*
 * simpleTrigger的属性有：开始时间，结束时间，重复次数和重复的时间间隔<br>
 * 重复次数：可以为0，正整数，或常量<br>
 * 重复时间间隔：必须为0或长整形的正整数，以毫秒作为时间单位，当重复的时间间隔为0时，意味着与Trigger同时触发执行<br>
 * 如果有指定结束时间属性，则结束时间属性优于重复次数。
 */
public class test2 {
    public static void main(String[] args) throws SchedulerException {
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // 设置任务的开始时间
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 3000);
        // 设置任务的结束时间,10秒后停止
        Date endDate = new Date();
        endDate.setTime(endDate.getTime() + 10000);
        JobDetail jobDetail = JobBuilder.newJob(HelloJobTrigger.class)// 加载任务类，与hellojob完成绑定
                .withIdentity("job1", "group1")// 参数1：任务的唯一实例，参数2:任务组的名称
                .build();
//        SimpleScheduleBuilder.simpleSchedule();
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")// 参数1：触发器的唯一实例，参数2：触发器务组的名称
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withRepeatCount(3))//每1秒执行一次，执行4（下标从0开始）次，当然要下面的endAt没有结束之前
                .startAt(startDate)//设置任务开始执行时间
                .endAt(endDate)//设置任务结束时候的时间,如果结束时间到了上面任务还没有执行完毕也会停止执行
                .build();
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();
    }
}
